﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class FightHeroMgr
{
    public Dictionary<byte, Hero> Heros { get; private set; }

    public FightHeroMgr()
    {
        Heros = new Dictionary<byte, Hero>();
    }

    public List<Hero> GetAll()
    {
        List<Hero> heroes = Heros.Values.ToList();
        heroes.Sort(comparison);
        return heroes;
    }

    private int comparison(Hero x, Hero y)
    {
        if (x.szPos > y.szPos)
        {
            return 1;
        }
        else if (x.szPos < y.szPos)
        {
            return -1;
        }
        else
        {
            return 0;
        }
    }

    public void Add(Hero hero)
    {
        Heros.Add(hero.szPos, hero);
    }

    /// <summary>
    /// 获取主角
    /// </summary>
    public bool TryGetPlayerHero(out Hero hero)
    {
        foreach (var item in Heros)
        {
            if (item.Value.szPos == 1)
            {
                hero = item.Value;
                return true;
            }
        }

        hero = null;
        return false;
    }

    public bool TryGetById(long id, out Hero hero)
    {
        foreach (var item in Heros)
        {
            if (item.Value.id == id)
            {
                hero = item.Value;
                return true;
            }
        }

        hero = null;
        return false;
    }

    public void RemoveById(long id)
    {
        foreach (var item in Heros)
        {
            if (item.Value.id == id)
            {
                Heros.Remove(item.Key);
                return;
            }
        }
    }

    public bool TryGetByPos(byte szPos, out Hero hero)
    {
        return Heros.TryGetValue(szPos, out hero);
    }

    public void RemoveByPos(byte szPos)
    {
        Heros.Remove(szPos);
    }
   
}
